<?php

$createdTimeStamp = microtime(true);
ini_set('default_charset', 'utf-8');
ob_start();
set_include_path(get_include_path() . PATH_SEPARATOR . '.');

// Resolve problema de Página Expirada ao clicar do botão Voltar do navegador
header("Expires: Sat, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: post-check=0, pre-check=0",false);
session_cache_limiter("must-revalidate");

session_start();

	
define('DS', DIRECTORY_SEPARATOR);
$lib = dirname(dirname(__FILE__)) . DS;
$controllers = dirname(dirname(__FILE__)) . DS . "controllers";


require_once($lib . "includes.php");
//echo $lib;

//$included_files = get_included_files();
//print_r($included_files);

$context = Context::getInstance();

$context->setDirController($controllers);
$engine = new HTMLStudioEngine($context);

	try 
	{
		//processar modulo
		$html = $engine->BuildPageFromModule();		
		
	}
	catch (NotAuthenticatedException $ex)
	{
		$returnUrl = $context->ContextValue('CurrentUrl');
		
		$dir = dirname($returnUrl);
		if ($dir == '/')
		{
			$dir = '';
		}
		
		//removendo parametro logout
		$returnUrl = str_replace('&logout=', '&login=', $returnUrl);
		$returnUrl = urlencode($returnUrl);
		
		$url = new URL('module:' . $context->ContextValue("htmlstudio.LOGINMODULE"));
		
		$url->addParam('ReturnUrl', $returnUrl);
		$context->redirectUrl( str_replace('&amp;', '&',$url->get()) );
		
	}
	catch (ModuleExecption $ex)
	{
		echo '<h1>Ocorreu um erro no sistema </h1>';
		echo '<p><b>Mensagem de erro:</b><pre> ' . $ex->getMessage() . '</pre></p>';
		echo '<pre>';
		throw $ex;
		echo '</pre>';
	}
	catch (Exception $ex)
	{
		echo '<h1>Ocorreu um erro no sistema </h1>';
		echo '<p><b>Mensagem de erro:</b><pre> ' . $ex->getMessage() . '</pre></p>';
		echo '<pre>';
		throw $ex;
		echo '</pre>';
	}	
	catch (DataBaseException $ex)
	{
		echo '<h1>Ocorreu um erro no sistema</h1>';
		echo '<p><b>Mensagem de erro:</b><pre> ' . $ex->getMessage() . '</pre></p>';
		echo '<pre>';
		throw $ex;
		echo '</pre>';
	}
	catch (HtmlStudioException $ex)
	{
		echo '<h1>Ocorreu um erro no Model</h1>';
		echo '<p><b>Mensagem de erro:</b><pre> ' . $ex->getMessage() . '</pre></p>';
		echo '<pre>';
		throw $ex;
		echo '</pre>';
	}
	

echo $html;
$elapsed = microtime(true)-$createdTimeStamp;

?>